package com.yunji.hushuang.inherit;

/**
 * @author hushuang
 * @since 2019/10/31
 */
public abstract class BaseOperate {

    /**
     * 前置处理，如果返回 false，终止执行
     */
    protected abstract boolean preProcess();

    /**
     * 后置处理，可选择实现
     */
    protected void postProcess() {
    }

    /**
     * 处理操作，由子类实现
     */
    protected abstract void doProcess();

    /**
     * 执行操作
     */
    public final void process() {
        if (preProcess()) {
            doProcess();
            postProcess();
        }
    }
}
